package com.example.lista_zakupow.database.utils;

import android.database.Cursor;
import com.example.lista_zakupow.database.utils.tables_headers.ListaZakupowTableHeaders;
import com.example.lista_zakupow.database.utils.tables_headers.ProduktyTableHeaders;
import com.example.lista_zakupow.zakupy.Jednostki;
import com.example.lista_zakupow.zakupy.ListaZakupow;
import com.example.lista_zakupow.zakupy.Produkt;

import java.util.ArrayList;
import java.util.List;

public class ListUtilities {
    public static List<ListaZakupow> getAllListaZakupowFromCursorObiect(Cursor c) {
        List<ListaZakupow> listArray = new ArrayList<ListaZakupow>();
        c.moveToFirst();
        while (c.isAfterLast() == false) {
            ListaZakupow listaZakupow = createListBy(c);
            listArray.add(listaZakupow);
            c.moveToNext();
        }
        return listArray;
    }

    public static List<Produkt> getAllProductsFromCursorObiect(Cursor c) {
        List<Produkt> produktsList = new ArrayList<Produkt>();
        c.moveToFirst();
        while (c.isAfterLast() == false) {
            Produkt produkt = createProductBy(c);
            produktsList.add(produkt);
            c.moveToNext();
        }
        return produktsList;
    }

    private static ListaZakupow createListBy(Cursor c) {
        int listId = c.getInt(c.getColumnIndex(ListaZakupowTableHeaders.LIST_ID));
        String listName = c.getString(c.getColumnIndex(ListaZakupowTableHeaders.LIST_NAME));

        return new ListaZakupow(listId, listName);
    }

    private static Produkt createProductBy(Cursor c) {
        int productId = c.getInt(c.getColumnIndex(ProduktyTableHeaders.PRODUCT_ID));
        String productName = c.getString(c.getColumnIndex(ProduktyTableHeaders.PRODUCT_NAME));
        int howMany = c.getInt(c.getColumnIndex(ProduktyTableHeaders.HOW_MANY));
        String unit = c.getString(c.getColumnIndex(ProduktyTableHeaders.UNIT));
        Jednostki jednostka = Jednostki.valueOf(unit);

        return new Produkt(productId, productName, howMany, jednostka);
    }
}
